package org.example.domain.strategy.service.rule.chain;

import org.example.domain.strategy.service.rule.chain.factory.DefaultChainFactory;

/**
 * @author Fuzhengwei bugstack.cn @小傅哥
 * @description 抽奖策略责任链，判断走那种抽奖策略。如；默认抽象、权重抽奖、黑名单抽奖
 * @create 2024-01-20 09:37
 */

public abstract class AbstractLogicChain implements ILogicChain{

    /**
     * 当一个类实现接口时，它必须实现接口中所有的抽象方法。
     * 但是，如果这个类是一个抽象类，那么它可以选择不实现接口中的某些方法。
     * 这样，继承这个抽象类的具体子类就必须实现这些方法。
     */

    private ILogicChain next;

    @Override
    public ILogicChain next() {
        return this.next;
    }

    @Override
    public ILogicChain appendNext(ILogicChain next) {
        this.next = next;
        return next;
    }

    protected abstract String ruleModel();
}
